package com.bjsxt.service;

import com.bjsxt.domain.Menu;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bjsxt.domain.SimpleUser;
import com.bjsxt.dto.MenuDto;

import java.util.List;

public interface MenuService{
    /**
     * 查询菜单信息
     * 如果用户是超级管理员权限 查询所有菜单
     * 如果用户是普通用户，那么根据用户ID查询用户权限级别拥有的菜单
     * @param isAdmin 是否是超级管理员
     * @param simpleUser 如果是超级管理员 simpleUser可以为空 如果不是超级管理员 则取出用户id
     */
    List<Menu> selectMenuTree(boolean isAdmin, SimpleUser simpleUser);

    /**
     * 根据指定条件(菜单名称、菜单状态)查询菜单列表
     * @param menuDto
     * @return
     */
    List<Menu> listAllMenus(MenuDto menuDto);

    /**
     * 添加菜单信息
     * @param menuDto
     * @return
     */
    int addMenu(MenuDto menuDto);

    /**
     * 根据菜单id查询菜单信息
     * @param menuId
     * @return
     */
    Menu getOne(Long menuId);

    /**
     * 修改菜单和权限信息
     * @param menuDto
     * @return
     */
    int updateMenu(MenuDto menuDto);

    /**
     * 判断当前菜单下是否有无子节点
     * @param menuId
     * @return
     */
    boolean hasChildByMenuId(Long menuId);

    /**
     * 根据菜单id删除菜单
     * @param menuId
     * @return
     */
    int deleteMenuById(Long menuId);


    /**
     * 根据角色id查询菜单id集合(只查询子节点的)
     * @param roleId
     * @return
     */
    List<Long> getMenuIdsByRoleId(Long roleId);
}
